<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>配置</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="install.fpm.install.html">安装</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="install.pecl.html">PECL 扩展库安装</a></div>
 <div class="up"><a href="install.fpm.html">FastCGI 进程管理器（FPM）</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="install.fpm.configuration" class="sect1">
 <h2 class="title">配置</h2>
 <p class="para">
  FPM 配置文件为 <var class="filename">php-fpm.conf</var>，其语法类似 <var class="filename">php.ini</var> 。
 </p>
 <div class="sect2"> 
  <h3 class="title"><var class="filename">php-fpm.conf</var> 全局配置段</h3>
  <dl>

   
    <dt id="pid">
     <em><code class="parameter">pid</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      PID文件的位置。默认为空。
     </p> 
    </dd>

   
   
    <dt id="error-log">
     <em><code class="parameter">error_log</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      错误日志的位置。默认：<em>安装路径 #INSTALL_PREFIX#/log/php-fpm.log</em>。
     </p> 
    </dd>

   
   
    <dt id="log-level">
     <em><code class="parameter">log_level</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      错误级别。可用级别为：alert（必须立即处理），error（错误情况），warning（警告情况），notice（一般重要信息），debug（调试信息）。默认：notice。
     </p> 
    </dd>

   
   
    <dt id="emergency-restart-threshold">
     <em><code class="parameter">emergency_restart_threshold</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      如果子进程在 <em>emergency_restart_interval</em> 设定的时间内收到该参数设定次数的
      SIGSEGV 或者 SIGBUS退出信息号，则FPM会重新启动。0 表示“关闭该功能”。默认值：0（关闭）。
     </p> 
    </dd>

   
   
    <dt id="emergency-restart-interval">
     <em><code class="parameter">emergency_restart_interval</code></em>
     <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span>
    </dt>

    <dd>

     <p class="para">
      emergency_restart_interval
      用于设定平滑重启的间隔时间。这么做有助于解决加速器中共享内存的使用问题。可用单位：s（秒），m（分），h（小时）或者
      d（天）。默认单位：s（秒）。默认值：0（关闭）。
     </p> 
    </dd>

   
   
    <dt id="process-control-timeout">
     <em><code class="parameter">process_control_timeout</code></em>
     <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span>
    </dt>

    <dd>

     <p class="para">
      设置子进程接受主进程复用信号的超时时间。可用单位：s（秒），m（分），h（小时）或者
      d（天）。默认单位：s（秒）。默认值：0（关闭）。
     </p> 
    </dd>

   
   
    <dt id="daemonize">
     <em><code class="parameter">daemonize</code></em>
     <span class="type"><a href="language.types.boolean.html" class="type boolean">boolean</a></span>
    </dt>

    <dd>

     <p class="para">
      设置 FPM 在后台运行。设置“no”将 FPM 保持在前台运行用于调试。默认值：yes。
     </p> 
    </dd>

   
  </dl>

 </div>
 
 <div class="sect2"> 
  <h3 class="title">运行配置区段</h3>
  <p class="para">
   在FPM中，可以使用不同的设置来运行多个进程池。
   这些设置可以针对每个进程池单独设置。 
  </p>
  <dl>

   
    <dt id="listen">
     <em><code class="parameter">listen</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      设置接受 FastCGI 请求的地址。可用格式为：&#039;ip:port&#039;，&#039;port&#039;，&#039;/path/to/unix/socket&#039;。每个进程池都需要设置。
     </p> 
    </dd>

   
   
    <dt id="listen-backlog">
     <em><code class="parameter">listen.backlog</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      设置 listen(2) 的半连接队列长度。“-1”表示无限制。默认值：-1。
     </p> 
    </dd>

   
   
    <dt id="listen-allowed-clients">
     <em><code class="parameter">listen.allowed_clients</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      设置允许连接到 FastCGI 的服务器 IPV4 地址。等同于 PHP FastCGI (5.2.2+) 中的 FCGI_WEB_SERVER_ADDRS
      环境变量。仅对 TCP 监听起作用。每个地址是用逗号分隔，如果没有设置或者为空，则允许任何服务器请求连接。默认值：any。
     </p> 
    </dd>

   
   
    <dt id="listen-owner">
     <em><code class="parameter">listen.owner</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      如果使用，表示设置 Unix 套接字的权限。在Linux中，读写权限必须设置，以便用于
      WEB 服务器连接。在很多 BSD 派生的系统中可以忽略权限允许自由连接。默认值：运行所使用的用户和组，权限为 0666。
     </p> 
    </dd>

   
   
    <dt id="listen-group">
     <em><code class="parameter">listen.group</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      参见 <em>listen.owner</em>。
     </p> 
    </dd>

   
   
    <dt id="listen-mode">
     <em><code class="parameter">listen.mode</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      参见 <em>listen.owner</em>。
     </p> 
    </dd>

   
   
    <dt id="user">
     <em><code class="parameter">user</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      FPM 进程运行的Unix用户。必须设置。
     </p> 
    </dd>

   
   
    <dt id="group">
     <em><code class="parameter">group</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      FPM 进程运行的 Unix 用户组。如果没有设置，则默认用户的组被使用。
     </p> 
    </dd>

   
   
    <dt id="pm">
     <em><code class="parameter">pm</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      设置进程管理器如何管理子进程。可用值：<em>static</em>，<em>ondemand</em>，<em>dynamic</em>。必须设置。
     </p>
     <p class="para">
      <em>static</em> - 子进程的数量是固定的（<em>pm.max_children</em>）。
     </p>
     <p class="para">
      <em>ondemand</em> - 进程在有需求时才产生（当请求时，与
      dynamic 相反，<em>pm.start_servers</em> 在服务启动时即启动。
     </p>
     <p class="para">
      <em>dynamic</em> - 
      子进程的数量在下面配置的基础上动态设置：<em>pm.max_children</em>，<em>pm.start_servers</em>，<em>pm.min_spare_servers</em>，<em>pm.max_spare_servers</em>。
     </p>
    </dd>

   
   
    <dt id="pm.max-chidlren">
     <em><code class="parameter">pm.max_children</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      <em>pm</em> 设置为 <em>static</em>
      时表示创建的子进程的数量，<em>pm</em> 设置为 
      <em>dynamic</em> 时表示最大可创建的子进程的数量。必须设置。
     </p>
     <p class="para">
      该选项设置可以同时提供服务的请求数限制。类似 Apache 的 mpm_prefork 中 MaxClients
      的设置和 普通PHP FastCGI中的 <var class="varname"><var class="varname">PHP_FCGI_CHILDREN</var></var> 环境变量。
     </p>
    </dd>

   
   
    <dt id="pm.start-servers">
     <em><code class="parameter">pm.start_servers</code></em>
     <span class="type"><span class="type in">in</span></span>
    </dt>

    <dd>

     <p class="para">
      设置启动时创建的子进程数目。仅在 <em>pm</em> 设置为
      <em>dynamic</em> 时使用。默认值：min_spare_servers + (max_spare_servers -
      min_spare_servers) / 2。
     </p> 
    </dd>

   
   
    <dt id="pm.min-spare-servers">
     <em><code class="parameter">pm.min_spare_servers</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      设置空闲服务进程的最低数目。仅在 <em>pm</em> 设置为 <em>dynamic</em> 时使用。必须设置。
     </p> 
    </dd>

   
   
    <dt id="pm.max-spare-servers">
     <em><code class="parameter">pm.max_spare_servers</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      设置空闲服务进程的最大数目。仅在 <em>pm</em> 设置为 <em>dynamic</em> 时使用。必须设置。
     </p> 
    </dd>

   
   
    <dt id="pm.max-requests">
     <em><code class="parameter">pm.max_requests</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为
      &#039;0&#039; 则一直接受请求，等同于 <var class="varname"><var class="varname">PHP_FCGI_MAX_REQUESTS</var></var> 环境变量。默认值：0。
     </p> 
    </dd>

   
   
    <dt id="pm.status-path">
     <em><code class="parameter">pm.status_path</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      FPM 状态页面的网址。如果没有设置，则无法访问状态页面，默认值：无。
     </p> 
    </dd>

   
   
    <dt id="ping.path">
     <em><code class="parameter">ping.path</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      FPM 监控页面的 ping 网址。如果没有设置，则无法访问 ping
      页面。该页面用于外部检测 FPM 是否存活并且可以响应请求。请注意必须以斜线开头（/）。
     </p> 
    </dd>

   
   
    <dt id="ping.response">
     <em><code class="parameter">ping.response</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      用于定义 ping 请求的返回响应。返回为 HTTP 200 的 text/plain 格式文本。默认值：pong。
     </p> 
    </dd>

   
   
    <dt id="request-terminate-timeout">
     <em><code class="parameter">request_terminate_timeout</code></em>
     <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span>
    </dt>

    <dd>

     <p class="para">
      设置单个请求的超时中止时间。该选项可能会对 php.ini 设置中的 &#039;max_execution_time&#039;
      因为某些特殊原因没有中止运行的脚本有用。设置为 &#039;0&#039; 表示 &#039;Off&#039;。可用单位：s（秒），m（分），h（小时）或者
      d（天）。默认单位：s（秒）。默认值：0（关闭）。
     </p> 
    </dd>

   
   
    <dt id="request-slowlog-timeout">
     <em><code class="parameter">request_slowlog_timeout</code></em>
     <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span>
    </dt>

    <dd>

     <p class="para">
      当一个请求该设置的超时时间后，就会将对应的 PHP 调用堆栈信息完整写入到慢日志中。设置为
      &#039;0&#039; 表示 &#039;Off&#039;。可用单位：s（秒），m（分），h（小时）或者
      d（天）。默认单位：s（秒）。默认值：0（关闭）。
     </p> 
    </dd>

   
   
    <dt id="slowlog">
     <em><code class="parameter">slowlog</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      慢请求的记录日志。默认值：<em>#INSTALL_PREFIX#/log/php-fpm.log.slow</em>。
     </p> 
    </dd>

   
   
    <dt id="rlimit-files">
     <em><code class="parameter">rlimit_files</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      设置文件打开描述符的 rlimit 限制。默认值：系统定义值。
     </p> 
    </dd>

   
   
    <dt id="rlimit-core">
     <em><code class="parameter">rlimit_core</code></em>
     <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
    </dt>

    <dd>

     <p class="para">
      设置核心 rlimit 最大限制值。可用值：&#039;unlimited&#039;，0 或者正整数。默认值：系统定义值。
     </p> 
    </dd>

   
   
    <dt id="chroot">
     <em><code class="parameter">chroot</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      启动时的 Chroot 目录。所定义的目录需要是绝对路径。如果没有设置，则 chroot 不被使用。
     </p> 
    </dd>

   
   
    <dt id="chdir">
     <em><code class="parameter">chdir</code></em>
     <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
    </dt>

    <dd>

     <p class="para">
      设置启动目录，启动时会自动 Chdir 到该目录。所定义的目录需要是绝对路径。默认值：当前目录，或者根目录（chroot时）。
     </p> 
    </dd>

   
   
    <dt id="catch-workers-output">
     <em><code class="parameter">catch_workers_output</code></em>
     <span class="type"><a href="language.types.boolean.html" class="type boolean">boolean</a></span>
    </dt>

    <dd>

     <p class="para">
      重定向运行过程中的 stdout 和 stderr 到主要的错误日志文件中。如果没有设置，stdout
      和 stderr 将会根据 FastCGI 的规则被重定向到 /dev/null。默认值：无。
     </p> 
    </dd>

   
  </dl>

  <p class="para">
   还可以在为一个运行池传递附加的环境变量，或者更新 PHP
   的配置值。可以在 <var class="filename">php-fpm.conf</var> 中如下面的配置参数来做到：
   <div class="example" id="example-60">
    <p><strong>Example #1 给运行池传递环境变量和设置 PHP 的配置值</strong></p>
    <div class="example-contents">
<div class="inicode"><pre class="inicode">env[HOSTNAME] = $HOSTNAME
       env[PATH] = /usr/local/bin:/usr/bin:/bin
       env[TMP] = /tmp
       env[TMPDIR] = /tmp
       env[TEMP] = /tmp

       php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
       php_flag[display_errors] = off
       php_admin_value[error_log] = /var/log/fpm-php.www.log
       php_admin_flag[log_errors] = on
       php_admin_value[memory_limit] = 32M</pre>
</div>
      </div>

     </div>
     PHP配置值通过 <em>php_value</em> 或者
     <em>php_flag</em> 设置，并且会覆盖以前的值。请注意 
     <a href="ini.core.html#ini.disable-functions" class="link">disable_functions</a> 或者 
     <a href="ini.core.html#ini.disable-classes" class="link">disable_classes</a> 在
     <var class="filename">php.ini</var> 之中定义的值不会被覆盖掉，但是会将新的设置附加在原有值的后面。
    </p>
    <p class="para">
     使用 <em>php_admin_value</em> 或者 <em>php_admin_flag</em>
     定义的值，不能被 PHP 代码中的 <span class="function"><a href="function.ini-set.html" class="function">ini_set()</a></span> 覆盖。
    </p>
    <p class="para">
     自 5.3.3 起，也可以通过 web 服务器设置 PHP 的设定。
     <div class="example" id="example-61">
      <p><strong>Example #2 在 nginx.conf 中设定 PHP</strong></p>
      <div class="example-contents">
<div class="inicode"><pre class="inicode">set $php_value &quot;pcre.backtrack_limit=424242&quot;;
set $php_value &quot;$php_value \n pcre.recursion_limit=99999&quot;;
fastcgi_param  PHP_VALUE $php_value;

fastcgi_param  PHP_ADMIN_VALUE &quot;open_basedir=/var/www/htdocs&quot;;</pre>
</div>
      </div>

     </div>
     <div class="caution"><strong class="caution">Caution</strong>
      <p class="para">
       由于这些设定是以 FastCGI 标头传递给 php-fpm，php-fpm
       不应绑定到外部网可以访问的地址上，否则任何人都能修改 PHP
       的配置选项了。参见
       <a href="install.fpm.configuration.html#listen-allowed-clients" class="link">listen.allowed_clients</a>。
      </p>
     </div>
    </p>
   </div>
   
</div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="install.fpm.install.html">安装</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="install.pecl.html">PECL 扩展库安装</a></div>
 <div class="up"><a href="install.fpm.html">FastCGI 进程管理器（FPM）</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
